package cmk.lee.easy;

/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * 如果不存在公共前缀，返回空字符串 ""。
 */

/**
 * 执行结果：通过
 * 执行用时：1 ms, 在所有 Java 提交中击败了88.38%的用户
 * 内存消耗：36.5 MB, 在所有 Java 提交中击败了79.51%的用户
 */
public class Leetcode_14 {
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length < 1) return "";
        String str = strs[0];
        //取strs数组第一个元素
        //for循环从第二个数组开始
        for (int i = 1; i < strs.length; i++) {
            //取第一个数组与第二个之后遍历的数组取最小值
            /**
             * 例：{aaaa,aab,ab,a}
             *     aaaa与aab 取a = 3
             *      3与ab    取a = 2
             *      2与a     取a = 1
             */
            int a = Math.min(str.length(), strs[i].length());
            int j = 0;
            //从数组元素第一位开始遍历字符
            for (j = 0; j < a; j++)
                //若相等，break;
                if (strs[i].charAt(j) != str.charAt(j)) break;
            if (j == 0) return "";
            str = str.substring(0, j);

        }
        return str;
    }

    public static void main(String[] args) {
        String[] arr = {"aaaa", "aabb"};
        System.out.println(longestCommonPrefix(arr));
    }
}
